using WebRtcProject.Models.Messages;

namespace WebRtcProject.Services
{
    public interface IRabbitMQService
    {
        // 发布消息
        Task PublishAsync<T>(T message, string exchangeName, string routingKey = "") where T : BaseMessage;
        
        // 发布用户事件
        Task PublishUserEventAsync(UserEventMessage message);
        
        // 发布房间事件
        Task PublishRoomEventAsync(RoomEventMessage message);
        
        // 发布信令事件
        Task PublishSignalingEventAsync(SignalingEventMessage message);
        
        // 连接管理
        Task<bool> IsConnectedAsync();
        Task ReconnectAsync();
        void Dispose();
        
        // 健康检查
        Task<bool> HealthCheckAsync();
    }
} 